code: public SemanticType.Array extractArrayType(SemanticType type, Environment environment,
  			ReadWriteTypeExtractor.Combinator<SemanticType.Array> combinator, SyntacticItem item) {
  		//
  		if (type != null) {
  			SemanticType.Array sourceArrayT = rwTypeExtractor.apply(type, environment, combinator);
  			//
  			if (sourceArrayT == null) {
  				syntaxError(item, EXPECTED_ARRAY);
  			} else {
  				return sourceArrayT;
  			}
  		}
  		return null;
  	}
docs: From an arbitrary type, extract the array type it represents which is either
  readable or writeable depending on the context.