@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   MutableResourceInfoImpl other = (MutableResourceInfoImpl) obj;
   if (accessed == null) {
     if (other.accessed != null) return false;
   } else if (!accessed.equals(other.accessed)) return false;
   if (bytes == null) {
     if (other.bytes != null) return false;
   } else if (!bytes.equals(other.bytes)) return false;
   if (created == null) {
     if (other.created != null) return false;
   } else if (!created.equals(other.created)) return false;
   if (inProject == null) {
     if (other.inProject != null) return false;
   } else if (!inProject.equals(other.inProject)) return false;
   if (metadata == null) {
     if (other.metadata != null) return false;
   } else if (!metadata.equals(other.metadata)) return false;
   if (modified == null) {
     if (other.modified != null) return false;
   } else if (!modified.equals(other.modified)) return false;
   if (name == null) {
     if (other.name != null) return false;
   } else if (!name.equals(other.name)) return false;
   if (owner == null) {
     if (other.owner != null) return false;
   } else if (!owner.equals(other.owner)) return false;
   if (parent == null) {
     if (other.parent != null) return false;
   } else if (!parent.equals(other.parent)) return false;
   if (shared == null) {
     if (other.shared != null) return false;
   } else if (!shared.equals(other.shared)) return false;
   if (tags == null) {
     if (other.tags != null) return false;
   } else if (!tags.equals(other.tags)) return false;
   if (type == null) {
     if (other.type != null) return false;
   } else if (!type.equals(other.type)) return false;
   if (url == null) {
     if (other.url != null) return false;
   } else if (!url.equals(other.url)) return false;
   if (version == null) {
     if (other.version != null) return false;
   } else if (!version.equals(other.version)) return false;
   return true;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((accessed == null) ? 0 : accessed.hashCode());
   result = prime * result + ((bytes == null) ? 0 : bytes.hashCode());
   result = prime * result + ((created == null) ? 0 : created.hashCode());
   result = prime * result + ((inProject == null) ? 0 : inProject.hashCode());
   result = prime * result + ((metadata == null) ? 0 : metadata.hashCode());
   result = prime * result + ((modified == null) ? 0 : modified.hashCode());
   result = prime * result + ((name == null) ? 0 : name.hashCode());
   result = prime * result + ((owner == null) ? 0 : owner.hashCode());
   result = prime * result + ((parent == null) ? 0 : parent.hashCode());
   result = prime * result + ((shared == null) ? 0 : shared.hashCode());
   result = prime * result + ((tags == null) ? 0 : tags.hashCode());
   result = prime * result + ((type == null) ? 0 : type.hashCode());
   result = prime * result + ((url == null) ? 0 : url.hashCode());
   result = prime * result + ((version == null) ? 0 : version.hashCode());
   return result;
 }