public SemanticType.Reference extractReferenceType(SemanticType type, Environment environment,
			ReadWriteTypeExtractor.Combinator<SemanticType.Reference> combinator, SyntacticItem item) {
		//
		if (type != null) {
			SemanticType.Reference refT = rwTypeExtractor.apply(type, environment, combinator);
			//
			if (refT == null) {
				syntaxError(item, EXPECTED_REFERENCE);
			} else {
				return refT;
			}
		}
		//
		return null;
	}
public SemanticType . Reference extractReferenceType ( SemanticType type , Environment environment , ReadWriteTypeExtractor . Combinator < SemanticType . Reference > combinator , SyntacticItem item ) { if ( type != null ) { SemanticType . Reference refT = rwTypeExtractor . apply ( type , environment , combinator ) ; if ( refT == null ) { syntaxError ( item , EXPECTED_REFERENCE ) ; } else { return refT ; } } return null ; }
From an arbitrary type, extract the reference type it represents which is
either readable or writeable depending on the context.