package de.dhbwstuttgart.bytecode.utilities;

import java.util.HashMap;

import de.dhbwstuttgart.bytecode.descriptor.DescriptorVisitor;
import de.dhbwstuttgart.syntaxtree.statement.ArgumentList;
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;

public class MethodFromMethodCall {
	private ArgumentList argList;
	private RefTypeOrTPHOrWildcardOrGeneric returnType;
	private String receiverName;
	private HashMap<String, String> genericsAndBoundsMethod;
	private HashMap<String,String> genericsAndBounds;
	
	public MethodFromMethodCall(ArgumentList argList,RefTypeOrTPHOrWildcardOrGeneric returnType, 
			String receiverName, HashMap<String, String> genericsAndBoundsMethod,
			HashMap<String,String> genericsAndBounds) {
		this.argList = argList;
		this.returnType = returnType;
		this.receiverName = receiverName;
		this.genericsAndBoundsMethod = genericsAndBoundsMethod;
		this.genericsAndBounds = genericsAndBounds;
	}
	
	
	public ArgumentList getArgList() {
		return argList;
	}

	public RefTypeOrTPHOrWildcardOrGeneric getReturnType() {
		return returnType;
	}
	
	public String getReceiverName() {
		return receiverName;
	}
	
	public HashMap<String, String> getGenericsAndBoundsMethod(){
		return genericsAndBoundsMethod;
	}
	
	public HashMap<String,String> getGenericsAndBounds(){
		return genericsAndBounds;
	}
	
	public String accept(DescriptorVisitor descVisitor) {
		return descVisitor.visit(this);
	}
}
