#vulnerable code 
                             private Object createRelationshipEntity(Edge edge, Object startEntity, Object endEntity) {

		// create and hydrate the new RE
		Object relationshipEntity = entityFactory.newObject(getRelationshipEntity(edge));
		setIdentity(relationshipEntity, edge.getId());

		// REs also have properties
		setProperties(edge, relationshipEntity);

		// register it in the mapping context
		mappingContext.registerRelationshipEntity(relationshipEntity, edge.getId());

		// set the start and end entities
		ClassInfo relEntityInfo = metadata.classInfo(relationshipEntity);

		RelationalWriter startNodeWriter = entityAccessStrategy.getRelationalEntityWriter(relEntityInfo, StartNode.class);
		if (startNodeWriter != null) {
			startNodeWriter.write(relationshipEntity, startEntity);
		} else {
			throw new RuntimeException("Cannot find a writer for the StartNode of relational entity " + relEntityInfo.name());
		}

		RelationalWriter endNodeWriter = entityAccessStrategy.getRelationalEntityWriter(relEntityInfo, EndNode.class);
		if (endNodeWriter != null) {
			endNodeWriter.write(relationshipEntity, endEntity);
		} else {
			throw new RuntimeException("Cannot find a writer for the EndNode of relational entity " + relEntityInfo.name());
		}

		return relationshipEntity;
	} 
                            #location 20 
                            #vulnerability type NULL_DEREFERENCE
#fixed code
                             private Object createRelationshipEntity(Edge edge, Object startEntity, Object endEntity) {

		// create and hydrate the new RE
		Object relationshipEntity = entityFactory.newObject(getRelationshipEntity(edge));
		setIdentity(relationshipEntity, edge.getId());

		// REs also have properties
		setProperties(edge, relationshipEntity);

		// register it in the mapping context
		mappingContext.registerRelationshipEntity(relationshipEntity, edge.getId());

		// set the start and end entities
		ClassInfo relEntityInfo = metadata.classInfo(relationshipEntity);

		RelationalWriter startNodeWriter = EntityAccessManager.getRelationalEntityWriter(relEntityInfo, StartNode.class);
		if (startNodeWriter != null) {
			startNodeWriter.write(relationshipEntity, startEntity);
		} else {
			throw new RuntimeException("Cannot find a writer for the StartNode of relational entity " + relEntityInfo.name());
		}

		RelationalWriter endNodeWriter = EntityAccessManager.getRelationalEntityWriter(relEntityInfo, EndNode.class);
		if (endNodeWriter != null) {
			endNodeWriter.write(relationshipEntity, endEntity);
		} else {
			throw new RuntimeException("Cannot find a writer for the EndNode of relational entity " + relEntityInfo.name());
		}

		return relationshipEntity;
	}