// Path: src/milk/telegram/type/file/photo/PhotoSize.java
// public class PhotoSize implements Identifier<String>{
// 
//     private final String id;
// 
//     private final int width;
//     private final int height;
// 
//     private final Integer size;
// 
//     private PhotoSize(JSONObject object){
//         this.id = object.getString("file_id");
//         this.width  = object.getInt("width");
//         this.height = object.getInt("height");
//         this.size = object.has("file_size") ? object.getInt("file_size") : null;
//     }
// 
//     public static PhotoSize create(JSONObject object){
//         if(object == null){
//             return null;
//         }
//         return new PhotoSize(object);
//     }
// 
//     public String getId(){
//         return id;
//     }
// 
//     public int getWidth(){
//         return this.width;
//     }
// 
//     public int getHeight(){
//         return this.height;
//     }
// 
//     public Integer getSize(){
//         return size;
//     }
// 
// }
// 
// Path: src/milk/telegram/type/Identifier.java
// public interface Identifier<T>{
// 
//     T getId();
// 
// }


import milk.telegram.type.file.photo.PhotoSize;
import milk.telegram.type.Identifier;
import org.json.JSONObject;
        this.file_name = object.optString("file_name");
        this.mime_type = object.optString("mime_type");

        this.thumb = PhotoSize.create(object.optJSONObject("thumb"));
        this.size = object.has("file_size") ? object.getInt("file_size") : null;
    }

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

    public String getId(){
        return file_id;
    }

    public PhotoSize getThumb(){
        return thumb;
    }

    public String getFileName(){
        return file_name;
    }

    public String getMimeType(){
        return mime_type;
    }

// Path: src/milk/telegram/type/file/photo/PhotoSize.java
// public class PhotoSize implements Identifier<String>{
// 
//     private final String id;
// 
//     private final int width;
//     private final int height;
// 
//     private final Integer size;
// 
//     private PhotoSize(JSONObject object){
//         this.id = object.getString("file_id");
//         this.width  = object.getInt("width");
//         this.height = object.getInt("height");
//         this.size = object.has("file_size") ? object.getInt("file_size") : null;
//     }
// 
//     public static PhotoSize create(JSONObject object){
//         if(object == null){
//             return null;
//         }
//         return new PhotoSize(object);
//     }
// 
//     public String getId(){
//         return id;
//     }
// 
//     public int getWidth(){
//         return this.width;
//     }
// 
//     public int getHeight(){
//         return this.height;
//     }
// 
//     public Integer getSize(){
//         return size;
//     }
// 
// }
// 
// Path: src/milk/telegram/type/Identifier.java
// public interface Identifier<T>{
// 
//     T getId();
// 
// }


// Path: src/milk/telegram/type/file/Document.java
import milk.telegram.type.file.photo.PhotoSize;
import milk.telegram.type.Identifier;
import org.json.JSONObject;

        this.file_name = object.optString("file_name");
        this.mime_type = object.optString("mime_type");

        this.thumb = PhotoSize.create(object.optJSONObject("thumb"));
        this.size = object.has("file_size") ? object.getInt("file_size") : null;
    }

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

    public String getId(){
        return file_id;
    }

    public PhotoSize getThumb(){
        return thumb;
    }

    public String getFileName(){
        return file_name;
    }

    public String getMimeType(){
        return mime_type;
    }

    public Integer getSize(){