public Type getType(Environment env, HashMap<String,IVarPattern> patternVars) {
if(patternSize == 0){
return tf.listType(tf.voidType());
}
Type elemType = tf.voidType();
for(int i = 0; i < patternSize; i += delta){
IMatchingResult child = patternChildren.get(i);
Type childType = child.getType(env, patternVars);
patternVars = merge(patternVars, patternChildren.get(i).getVariables());
boolean isMultiVar = child instanceof MultiVariablePattern || child instanceof TypedMultiVariablePattern;
if(childType.isList() && isMultiVar){
elemType = elemType.lub(childType.getElementType());
} else {
elemType = elemType.lub(childType);
}
}
if(debug) {