// Path: src/main/java/com/gikk/twirk/types/emote/Emote.java
// public interface Emote {
// 	/** Fetches the emotes ID as String. This became necessary after Twitch start
// 	 * including other characters than numbers in emote IDs
// 	 *
// 	 * @return The emotes ID
// 	 */
// 	String getEmoteIDString();
// 	
// 	/** A list of pairs on indices. Each pair is a BEGIN-END pair of a emote occurrence in the message.<br><br>
// 	 * 
// 	 * For example, if the message is: {@code Kappa PogChamp Kappa}<br> the list for emote 'Kappa' will include these pairs:<ul>
// 	 * <li> (0,5)
// 	 * <li> (15,20)
// 	 * </ul>
// 	 * 
// 	 * @return The indices this emote takes up in the associated message
// 	 */
// 	LinkedList<EmoteIndices> getIndices();
// 	
// 	/** The emote's pattern. For example: 'Kappa'
// 	 * 
// 	 * @return The emote's pattern
// 	 */
// 	String getPattern();
// 	
// 	/**Emote images can be downloaded from Twitch's server, and come in three
// 	 * sizes. Use this method to get the address for the emote.
// 	 * 
// 	 * @param imageSize Emotes comes in three sizes. Specify which size you want
// 	 * @return The address for the emote's image
// 	 */
// 	String getEmoteImageUrl(EMOTE_SIZE imageSize);
// 	
// 	/**Class for representing the beginning and end of an emote occurrence within a message
// 	 * 
// 	 * @author Gikkman
// 	 */	
// 	class EmoteIndices{
// 		public final int beingIndex;
// 		public final int endIndex;
// 		
// 		public EmoteIndices(int begin, int end){
// 			this.beingIndex = begin;
// 			this.endIndex = end;
// 		}
// 		
// 		public String toString(){
// 			return "(" +beingIndex + "," + endIndex + ")";
// 		}
// 	}
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Raid.java
// public interface Raid {
// 
//     /**Fetches the display name of the user whom initiated the raid.
//      *
//      * @return the display name of the raid initiator
//      */
//     public String getSourceDisplayName();
// 
//     /**Fetches the login name of the user whom initiated the raid. This will
//      * also give you the name of the channel which the raid originated from.
//      *
//      * @return the login name of the raid initiator
//      */
//     public String getSourceLoginName();
// 
// 
//     /**Fetches the number of users participating in the raid.
//      *
//      * @return number of raiders
//      */
//     public int getRaidCount();
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Ritual.java
// public interface Ritual {
//     /**Fetches the name of the Ritual
//      *
//      * @return the ritual name
//      */
//     public String getRitualName();
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Subscription.java
// public interface Subscription {
//     public SubscriptionPlan getSubscriptionPlan();
// 
//     /**Get the number of month's the subscription's been active. New subscriptions
//      * return 1, whilst re-subscriptions tells which month was just activated.
//      *
//      * @return number of months
//      */
//     public int getMonths();
// 
//     /**Get the number of month's the subscription's been active consecutive.
//      *
//      * @return number of months
//      */
//     public int getStreak();
// 
//     /** Returns if user decide to share the streak, this decide if the value of {@code getStreak} its zero or another.
//      *
//      * @return {@code true} if user share the streak
//      */
//     public boolean isSharedStreak();
// 
//     /**Returns the name of the purchased subscription plan.  This may be a
//      * default name or one created by the channel owner.
//      *
//      * @return display name of the subscription plan
//      */
//     public String getSubscriptionPlanName();
// 
//     /**Returns whether this was a new sub or a re-sub.
//      *
//      * @return {@code true} if this was a re-subscription
//      */
//     public boolean isResub();
// 
//     /**Tells whether this is a subscription gift or not.
//      *
//      * @return {@code true} if this was a gift
//      */
//     public boolean isGift();
// 
//     /**Retrieves the SubscriptionGift item, which holds information about the
//      * gift and the recipiant of the gift. The Optional object wraps the
//      * SubscriptionGift object (as an alternative to returning {@code null}).
//      *
//      * @return the subscription gift, wrapped in a {@link Optional}
//      */
//     public Optional<SubscriptionGift> getSubscriptionGift();
// }


import com.gikk.twirk.types.emote.Emote;
import com.gikk.twirk.types.usernotice.subtype.Raid;
import com.gikk.twirk.types.usernotice.subtype.Ritual;
import com.gikk.twirk.types.usernotice.subtype.Subscription;
import java.util.List;
import java.util.Optional;
package com.gikk.twirk.types.usernotice;


class UsernoticeImpl implements Usernotice{

    private final String raw;

// Path: src/main/java/com/gikk/twirk/types/emote/Emote.java
// public interface Emote {
// 	/** Fetches the emotes ID as String. This became necessary after Twitch start
// 	 * including other characters than numbers in emote IDs
// 	 *
// 	 * @return The emotes ID
// 	 */
// 	String getEmoteIDString();
// 	
// 	/** A list of pairs on indices. Each pair is a BEGIN-END pair of a emote occurrence in the message.<br><br>
// 	 * 
// 	 * For example, if the message is: {@code Kappa PogChamp Kappa}<br> the list for emote 'Kappa' will include these pairs:<ul>
// 	 * <li> (0,5)
// 	 * <li> (15,20)
// 	 * </ul>
// 	 * 
// 	 * @return The indices this emote takes up in the associated message
// 	 */
// 	LinkedList<EmoteIndices> getIndices();
// 	
// 	/** The emote's pattern. For example: 'Kappa'
// 	 * 
// 	 * @return The emote's pattern
// 	 */
// 	String getPattern();
// 	
// 	/**Emote images can be downloaded from Twitch's server, and come in three
// 	 * sizes. Use this method to get the address for the emote.
// 	 * 
// 	 * @param imageSize Emotes comes in three sizes. Specify which size you want
// 	 * @return The address for the emote's image
// 	 */
// 	String getEmoteImageUrl(EMOTE_SIZE imageSize);
// 	
// 	/**Class for representing the beginning and end of an emote occurrence within a message
// 	 * 
// 	 * @author Gikkman
// 	 */	
// 	class EmoteIndices{
// 		public final int beingIndex;
// 		public final int endIndex;
// 		
// 		public EmoteIndices(int begin, int end){
// 			this.beingIndex = begin;
// 			this.endIndex = end;
// 		}
// 		
// 		public String toString(){
// 			return "(" +beingIndex + "," + endIndex + ")";
// 		}
// 	}
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Raid.java
// public interface Raid {
// 
//     /**Fetches the display name of the user whom initiated the raid.
//      *
//      * @return the display name of the raid initiator
//      */
//     public String getSourceDisplayName();
// 
//     /**Fetches the login name of the user whom initiated the raid. This will
//      * also give you the name of the channel which the raid originated from.
//      *
//      * @return the login name of the raid initiator
//      */
//     public String getSourceLoginName();
// 
// 
//     /**Fetches the number of users participating in the raid.
//      *
//      * @return number of raiders
//      */
//     public int getRaidCount();
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Ritual.java
// public interface Ritual {
//     /**Fetches the name of the Ritual
//      *
//      * @return the ritual name
//      */
//     public String getRitualName();
// }
// 
// Path: src/main/java/com/gikk/twirk/types/usernotice/subtype/Subscription.java
// public interface Subscription {
//     public SubscriptionPlan getSubscriptionPlan();
// 
//     /**Get the number of month's the subscription's been active. New subscriptions
//      * return 1, whilst re-subscriptions tells which month was just activated.
//      *
//      * @return number of months
//      */
//     public int getMonths();
// 
//     /**Get the number of month's the subscription's been active consecutive.
//      *
//      * @return number of months
//      */
//     public int getStreak();
// 
//     /** Returns if user decide to share the streak, this decide if the value of {@code getStreak} its zero or another.
//      *
//      * @return {@code true} if user share the streak
//      */
//     public boolean isSharedStreak();
// 
//     /**Returns the name of the purchased subscription plan.  This may be a
//      * default name or one created by the channel owner.
//      *
//      * @return display name of the subscription plan
//      */
//     public String getSubscriptionPlanName();
// 
//     /**Returns whether this was a new sub or a re-sub.
//      *
//      * @return {@code true} if this was a re-subscription
//      */
//     public boolean isResub();
// 
//     /**Tells whether this is a subscription gift or not.
//      *
//      * @return {@code true} if this was a gift
//      */
//     public boolean isGift();
// 
//     /**Retrieves the SubscriptionGift item, which holds information about the
//      * gift and the recipiant of the gift. The Optional object wraps the
//      * SubscriptionGift object (as an alternative to returning {@code null}).
//      *
//      * @return the subscription gift, wrapped in a {@link Optional}
//      */
//     public Optional<SubscriptionGift> getSubscriptionGift();
// }


// Path: src/main/java/com/gikk/twirk/types/usernotice/UsernoticeImpl.java
import com.gikk.twirk.types.emote.Emote;
import com.gikk.twirk.types.usernotice.subtype.Raid;
import com.gikk.twirk.types.usernotice.subtype.Ritual;
import com.gikk.twirk.types.usernotice.subtype.Subscription;
import java.util.List;
import java.util.Optional;

package com.gikk.twirk.types.usernotice;


class UsernoticeImpl implements Usernotice{

    private final String raw;

    private final Optional<Raid> raid;