// Path: libuosl/src/org/solhost/folko/uosl/libuosl/network/SendableObject.java
// public interface SendableObject {
//     public long getSerial();
//     public String getName();
//     public int getGraphic();
//     public int getHue();
//     public Point3D getLocation();
// }
// 
// Path: libuosl/src/org/solhost/folko/uosl/libuosl/types/Point3D.java
// public class Point3D extends Point2D {
//     private static final long serialVersionUID = 1L;
//     public static final int MIN_ELEVATION = -128;
//     public static final int MAX_ELEVATION = 127;
//     protected final int z;
// 
//     public Point3D(int x, int y) {
//         super(x, y);
//         this.z = 0;
//     }
// 
//     public Point3D(int x, int y, int z) {
//         super(x, y);
//         if(z < MIN_ELEVATION || z > MAX_ELEVATION) {
//             throw new IllegalArgumentException("invalid z coordinate: " + z);
//         }
//         this.z = z;
//     }
// 
//     public Point3D(Point2D d2, int z) {
//         super(d2.x, d2.y);
//         if(z < MIN_ELEVATION || z > MAX_ELEVATION) {
//             throw new IllegalArgumentException("invalid z coordinate: " + z);
//         }
//         this.z = z;
//     }
// 
//     public int getZ() {
//         return z;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = super.hashCode();
//         result = prime * result + z;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (!super.equals(obj))
//             return false;
//         if (!(obj instanceof Point3D))
//             return false;
//         Point3D other = (Point3D) obj;
//         if (z != other.z)
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("<Point3D: x = %d, y = %d, z = %d>", x, y, z);
//     }
// }


import org.solhost.folko.uosl.libuosl.network.SendableObject;
import org.solhost.folko.uosl.libuosl.types.Point3D;
package org.solhost.folko.uosl.slclient.models;


public abstract class SLObject implements SendableObject {
    protected long serial;
// Path: libuosl/src/org/solhost/folko/uosl/libuosl/network/SendableObject.java
// public interface SendableObject {
//     public long getSerial();
//     public String getName();
//     public int getGraphic();
//     public int getHue();
//     public Point3D getLocation();
// }
// 
// Path: libuosl/src/org/solhost/folko/uosl/libuosl/types/Point3D.java
// public class Point3D extends Point2D {
//     private static final long serialVersionUID = 1L;
//     public static final int MIN_ELEVATION = -128;
//     public static final int MAX_ELEVATION = 127;
//     protected final int z;
// 
//     public Point3D(int x, int y) {
//         super(x, y);
//         this.z = 0;
//     }
// 
//     public Point3D(int x, int y, int z) {
//         super(x, y);
//         if(z < MIN_ELEVATION || z > MAX_ELEVATION) {
//             throw new IllegalArgumentException("invalid z coordinate: " + z);
//         }
//         this.z = z;
//     }
// 
//     public Point3D(Point2D d2, int z) {
//         super(d2.x, d2.y);
//         if(z < MIN_ELEVATION || z > MAX_ELEVATION) {
//             throw new IllegalArgumentException("invalid z coordinate: " + z);
//         }
//         this.z = z;
//     }
// 
//     public int getZ() {
//         return z;
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = super.hashCode();
//         result = prime * result + z;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (!super.equals(obj))
//             return false;
//         if (!(obj instanceof Point3D))
//             return false;
//         Point3D other = (Point3D) obj;
//         if (z != other.z)
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return String.format("<Point3D: x = %d, y = %d, z = %d>", x, y, z);
//     }
// }


// Path: slclient/src/org/solhost/folko/uosl/slclient/models/SLObject.java
import org.solhost.folko.uosl.libuosl.network.SendableObject;
import org.solhost.folko.uosl.libuosl.types.Point3D;

package org.solhost.folko.uosl.slclient.models;


public abstract class SLObject implements SendableObject {
    protected long serial;
    protected Point3D location;