package classes;
/*******************************************************************************
 * Copyright (c) 2007, 2008 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/**
 * 
 * @since
 */
public class Test7 {

	public String m1(String s) {
		return null;
	}
	
	protected String m2(String s) {
		return null;
	}
	
	private String m3(String s) {
		return null;
	}
	
	public Integer[] m4(Double[] d) {
		return null;
	}
	
	protected Integer[] m5(Double[] d) {
		return null;
	}
	
	private Integer[] m6(Double[] d) {
		return null;
	}
	
	protected static String m7(String s) {
		return null;
	}
	
	public static String m8(String s) {
		return null;
	}
	
	private static String m9(String s) {
		return null;
	}
	
	protected static Integer[] m10(Double[] d) {
		return null;
	}
	
	public static Integer[] m11(Double[] d) {
		return null;
	}
	
	private static Integer[] m12(Double[] d) {
		return null;
	}
}
