checkArgument(id != null, "ID cannot be null.");
checkArgument(!id.trim().isEmpty(), "ID cannot be empty or blank.");
checkArgument(target != null, "Target cannot be null.");
checkArgument(!hasEdgeTo(target.getId()), "Edge already exists.");
Edge rv = new EdgeImpl(id, this, target);
edges.add(rv);
return rv;
}