package classes;
import java.util.ArrayList;
import java.util.Map;

/*******************************************************************************
 * Copyright (c) 2007, 2008 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/**
 * 
 * @since
 */
public class Test8 {

	public ArrayList<String> m1(Map<Integer, Test8Outer> map, Double...doubles) {
		return null;
	}
	
	protected static ArrayList<String> m2(Map<Integer, Test8Outer> map, Double...doubles) {
		return null;
	}
}


class Test8Outer {
	
}