// Path: src/milk/telegram/type/Identifier.java
// public interface Identifier<T>{
// 
//     T getId();
// 
// }
// 
// Path: src/milk/telegram/type/file/Location.java
// public class Location{
// 
//     private final double latitude;
//     private final double longitude;
// 
//     private Location(JSONObject object){
//         this.latitude = object.getDouble("latitude");
//         this.longitude = object.getDouble("longitude");
//     }
// 
//     public static Location create(JSONObject object){
//         if(object == null){
//             return null;
//         }
//         return new Location(object);
//     }
// 
//     public double getLatitude(){
//         return latitude;
//     }
// 
//     public double getLongitude(){
//         return longitude;
//     }
// 
// }
// 
// Path: src/milk/telegram/type/user/User.java
// public class User implements Identifier<Integer>, Usernamed{
// 
//     private int id;
// 
//     private String last;
//     private String first;
//     private String username;
// 
//     private User(JSONObject object){
//         this.id = object.getInt("id");
//         this.last = object.optString("last_name", null);
//         this.first = object.optString("first_name", null);
//         this.username = object.optString("username", null);
//     }
// 
//     public static User create(JSONObject object){
//         if(object == null){
//             return null;
//         }else if(object.has("result")){
//             object = object.optJSONObject("result");
//             if(object.length() < 1){
//                 return null;
//             }
//         }
//         return new User(object);
//     }
// 
//     public Integer getId(){
//         return this.id;
//     }
// 
//     public String getFirstName(){
//         return this.first;
//     }
// 
//     public String getLastName(){
//         return this.last;
//     }
// 
//     public String getUsername(){
//         return this.username;
//     }
// 
//     public String getFullName(){
//         return (this.getLastName() == null ? "" : this.getLastName() + " ") + this.getFirstName();
//     }
// 
// }


import milk.telegram.type.Identifier;
import milk.telegram.type.file.Location;
import milk.telegram.type.user.User;
import org.json.JSONObject;
package milk.telegram.type.inline;



public class InlineQuery implements Identifier<String>{

    private final String id;
    private final User from;
    private final Location location;

    private final String query;
    private final String offset;

    private InlineQuery(JSONObject object){
        this.id = object.getString("id");
        this.from = User.create(object.getJSONObject("from"));
        this.location = Location.create(object.optJSONObject("location"));

        this.query = object.getString("query");
        this.offset = object.getString("offset");
    }

    public static InlineQuery create(JSONObject object){
        if(object == null){
            return null;
        }
        return new InlineQuery(object);
    }

    public String getId(){
// Path: src/milk/telegram/type/Identifier.java
// public interface Identifier<T>{
// 
//     T getId();
// 
// }
// 
// Path: src/milk/telegram/type/file/Location.java
// public class Location{
// 
//     private final double latitude;
//     private final double longitude;
// 
//     private Location(JSONObject object){
//         this.latitude = object.getDouble("latitude");
//         this.longitude = object.getDouble("longitude");
//     }
// 
//     public static Location create(JSONObject object){
//         if(object == null){
//             return null;
//         }
//         return new Location(object);
//     }
// 
//     public double getLatitude(){
//         return latitude;
//     }
// 
//     public double getLongitude(){
//         return longitude;
//     }
// 
// }
// 
// Path: src/milk/telegram/type/user/User.java
// public class User implements Identifier<Integer>, Usernamed{
// 
//     private int id;
// 
//     private String last;
//     private String first;
//     private String username;
// 
//     private User(JSONObject object){
//         this.id = object.getInt("id");
//         this.last = object.optString("last_name", null);
//         this.first = object.optString("first_name", null);
//         this.username = object.optString("username", null);
//     }
// 
//     public static User create(JSONObject object){
//         if(object == null){
//             return null;
//         }else if(object.has("result")){
//             object = object.optJSONObject("result");
//             if(object.length() < 1){
//                 return null;
//             }
//         }
//         return new User(object);
//     }
// 
//     public Integer getId(){
//         return this.id;
//     }
// 
//     public String getFirstName(){
//         return this.first;
//     }
// 
//     public String getLastName(){
//         return this.last;
//     }
// 
//     public String getUsername(){
//         return this.username;
//     }
// 
//     public String getFullName(){
//         return (this.getLastName() == null ? "" : this.getLastName() + " ") + this.getFirstName();
//     }
// 
// }


// Path: src/milk/telegram/type/inline/InlineQuery.java
import milk.telegram.type.Identifier;
import milk.telegram.type.file.Location;
import milk.telegram.type.user.User;
import org.json.JSONObject;

package milk.telegram.type.inline;



public class InlineQuery implements Identifier<String>{

    private final String id;
    private final User from;
    private final Location location;

    private final String query;
    private final String offset;

    private InlineQuery(JSONObject object){
        this.id = object.getString("id");
        this.from = User.create(object.getJSONObject("from"));
        this.location = Location.create(object.optJSONObject("location"));

        this.query = object.getString("query");
        this.offset = object.getString("offset");
    }

    public static InlineQuery create(JSONObject object){
        if(object == null){
            return null;
        }
        return new InlineQuery(object);
    }

    public String getId(){
        return id;