// Path: src/main/java/com/nikhaldimann/viewselector/attributes/AttributeAccessException.java
// public class AttributeAccessException extends RuntimeException {
// 
//     public AttributeAccessException(Exception cause) {
//         super(cause);
//     }
// 
//     public AttributeAccessException(String message, Exception cause) {
//         super(message, cause);
//     }
// 
// }
// 
// Path: src/main/java/com/nikhaldimann/viewselector/attributes/ViewSelectionAttribute.java
// public class ViewSelectionAttribute extends ArrayList<Object> {
// 
//     public ViewSelectionAttribute() {
//         super();
//     }
// 
//     public ViewSelectionAttribute(ViewSelection selection, String attributeName) {
//         super();
//         String getterMethodName = ViewAttributes.getGetterMethodName(attributeName);
//         for (View matched : selection) {
//             add(ViewAttributes.callGetterNormalizingStrings(matched, getterMethodName));
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/nikhaldimann/viewselector/selection/ViewSelection.java
// public class ViewSelection extends LinkedHashSet<View> {
// 
// }


import org.fest.assertions.api.ANDROID;
import org.fest.assertions.api.AbstractIterableAssert;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewParent;
import android.view.animation.Animation;
import com.nikhaldimann.viewselector.attributes.AttributeAccessException;
import com.nikhaldimann.viewselector.attributes.ViewSelectionAttribute;
import com.nikhaldimann.viewselector.selection.ViewSelection;
package com.nikhaldimann.viewselector;




/**
 * Custom assertions for {@link ViewSelection}s. Generally, use entry points in
 * {@link ViewSelectorAssertions} to get access to these.
 */
public class ViewSelectionAssert
        extends AbstractIterableAssert<ViewSelectionAssert, ViewSelection, View> {

    public ViewSelectionAssert(ViewSelection actual) {
        super(actual, ViewSelectionAssert.class);
    }

    /**
     * Creates an object for making assertions about an attribute set extracted from
     * each view in the selection. This always fails for an empty selection.
     * @param attributeName name of the attribute to check (e.g., {@code "text"}. The
     *     implementation will call a getter on each view based on this attribute name
     *     (e.g., {@code getText()}.
     * @return a new assert over a set of attributes
     */
    public ViewSelectionAttributeAssert attribute(String attributeName) {
        isNotEmpty();
// Path: src/main/java/com/nikhaldimann/viewselector/attributes/AttributeAccessException.java
// public class AttributeAccessException extends RuntimeException {
// 
//     public AttributeAccessException(Exception cause) {
//         super(cause);
//     }
// 
//     public AttributeAccessException(String message, Exception cause) {
//         super(message, cause);
//     }
// 
// }
// 
// Path: src/main/java/com/nikhaldimann/viewselector/attributes/ViewSelectionAttribute.java
// public class ViewSelectionAttribute extends ArrayList<Object> {
// 
//     public ViewSelectionAttribute() {
//         super();
//     }
// 
//     public ViewSelectionAttribute(ViewSelection selection, String attributeName) {
//         super();
//         String getterMethodName = ViewAttributes.getGetterMethodName(attributeName);
//         for (View matched : selection) {
//             add(ViewAttributes.callGetterNormalizingStrings(matched, getterMethodName));
//         }
//     }
// 
// }
// 
// Path: src/main/java/com/nikhaldimann/viewselector/selection/ViewSelection.java
// public class ViewSelection extends LinkedHashSet<View> {
// 
// }


// Path: src/main/java/com/nikhaldimann/viewselector/ViewSelectionAssert.java
import org.fest.assertions.api.ANDROID;
import org.fest.assertions.api.AbstractIterableAssert;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewParent;
import android.view.animation.Animation;
import com.nikhaldimann.viewselector.attributes.AttributeAccessException;
import com.nikhaldimann.viewselector.attributes.ViewSelectionAttribute;
import com.nikhaldimann.viewselector.selection.ViewSelection;

package com.nikhaldimann.viewselector;




/**
 * Custom assertions for {@link ViewSelection}s. Generally, use entry points in
 * {@link ViewSelectorAssertions} to get access to these.
 */
public class ViewSelectionAssert
        extends AbstractIterableAssert<ViewSelectionAssert, ViewSelection, View> {

    public ViewSelectionAssert(ViewSelection actual) {
        super(actual, ViewSelectionAssert.class);
    }

    /**
     * Creates an object for making assertions about an attribute set extracted from
     * each view in the selection. This always fails for an empty selection.
     * @param attributeName name of the attribute to check (e.g., {@code "text"}. The
     *     implementation will call a getter on each view based on this attribute name
     *     (e.g., {@code getText()}.
     * @return a new assert over a set of attributes
     */
    public ViewSelectionAttributeAssert attribute(String attributeName) {
        isNotEmpty();
        ViewSelectionAttribute attributeValues = new ViewSelectionAttribute(actual, attributeName);