// Copyright 2014 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package structs

type S struct {
	X, Y       float64
	unexported bool
}

func (s *S) Sum() float64 {
	return s.X + s.Y
}

func (s *S) Identity() (*S, error) {
	return s, nil
}

func Identity(s *S) *S {
	return s
}

func IdentityWithError(s *S) (*S, error) {
	return s, nil
}

type (
	S2 struct{}
	I  interface {
		M()
	}
)

func (s *S2) M() {
}

func (_ *S2) String() string {
	return ""
}

// Structs is a struct with the same name as its package.
type Structs struct{}

func (_ *Structs) M() {
}
