typical object systems are defined in terms of, well, object systems
        
        has input_file => (
           is       => 'ro',
           isa      => File,
           coerce   => 1,
           required => 1,
        );
        
        wouldn't it be nice to be able to say what we mean?
        
        has_file 'input_file';