private Type getConstructorType() {
		String name = currentNode.getProperty(PropertyNames.NODE).toString();
		String adtName = currentNode.getProperty(PropertyNames.ADT).toString();
		Type adt = typeStore.lookupAbstractDataType(adtName);		
		if (adt == null)
			return typeFactory.nodeType();
		Set<Type> potentialTypes = typeStore.lookupConstructor(adt, name);
		if (potentialTypes.size() == 1)
			return typeStore.lookupConstructor(adt, name).iterator().next();
		else if (potentialTypes.size() > 1) {
			String[] parameterTypeNames = new String[0];
			if(currentNode.hasProperty(PropertyNames.PARAMETERS))
				parameterTypeNames = (String[])currentNode.getProperty(PropertyNames.PARAMETERS);			
			for(Type type : potentialTypes) {
				Type tupleType = type.getFieldTypes();
				int arity = tupleType.getArity();
				if (arity == parameterTypeNames.length) {
					boolean typeFound = true;
					for (int i = 0; i < arity; i++) {
						if (!parameterTypeNames[i].equals(tupleType.getFieldType(i).toString()))
							typeFound = false;
					}
					if (typeFound)
						return type;
				}
			}
		}
		return typeFactory.nodeType();
	}